#include "stdlib.h"
#include "string.h"
#include "stdio.h"

void main()
{
   
	int a[10] = {1,3,4,5,65,76,7,34,4,32};
	printfArray02(a);
}


//int a[10]  -=-->int a[] ---->int *a
//数组做函数形参的时候，如果在形参中定义int a[10]语句，
//c/c++编译器 会做优化，技术推演如下
//int a[10]  -=-->int a[] ---->int *a
//总结：函数调用的时候，把数组首地址和有效数据长度传给被调用函数才是最正确的做法

int printfArray02(int a[10]) 
{
	
	int num = 0;
	num = sizeof(a)/sizeof(*a);
	printf("a:%d \n", a);
	printf("*a:%d \n", *a);
	//a已经退化成指针
	//指针即为地址，所以本人认为，指针几个字节跟语言无关，而是跟系统的寻址能力有关，譬如以前是16为地址，指针即为2个字节，现在一般是32位系统，所以是4个字节，以后64位，则就为8个字节
	printf("sizeof(a):%d \n", sizeof(a)); 
	//*a 首元素
	printf("sizeof(*a):%d \n", sizeof(*a));
	printf("num:%d \n", num);
	
	
	return 0;
}